package net.realsee.service.wcs.intf;

import cn.hutool.http.HttpRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import net.realsee.common.enums.wcs.intf.InterfaceClassEnum;
import net.realsee.domain.wcs.intf.bo.InterfaceRequest;
import net.realsee.domain.wcs.intf.WcsIntf;
import net.realsee.domain.wcs.intf.bo.WcsIntfBo;
import net.realsee.domain.wcs.intf.vo.WcsIntfVo;
import net.realsee.framework.core.domain.PageQuery;
import net.realsee.framework.core.page.TableDataInfo;

import java.util.Collection;
import java.util.List;

/**
 * 接口管理Service接口
 *
 * @author realsee
 * @date 2023-08-11
 */
public interface IWcsIntfService extends IService<WcsIntf> {

    /**
     * 查询接口管理
     */
    WcsIntfVo selectVoById(Long id);

    /**
     * 查询接口管理
     */
    WcsIntf getByInterfaceCode(String interfaceCode);

    /**
     * 查询接口管理列表
     */
    TableDataInfo<WcsIntfVo> selectVoPage(WcsIntfBo bo, PageQuery pageQuery);

    /**
     * 查询接口管理列表
     */
    List<WcsIntfVo> selectVoList(WcsIntfBo bo);

    /**
     * 新增接口管理
     */
    Boolean insertByBo(WcsIntfBo bo);

    /**
     * 修改接口管理
     */
    Boolean updateByBo(WcsIntfBo bo);

    /**
     * 校验并批量删除接口管理信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);

    /**
     * 构建Http请求对象
     *
     * @param interfaceRequest 接口请求对象
     * @return Http请求对象
     */
    HttpRequest getHttpRequest(InterfaceRequest interfaceRequest);

    /**
     * 获取重试次数
     *
     * @param interfaceRequest 接口请求对象
     * @return 重试次数
     */
    Long getRetryCount(InterfaceRequest interfaceRequest);

    /**
     * 通过类型查询接口列表
     */
    List<WcsIntf> listByClass(InterfaceClassEnum classEnum);

    /**
     * 获取数据库中已创建好的接口编码
     */
    List<String> listInterfaceCodeInDB();

}
